package com.zhaoqi.hr.dto.response;

import com.zhaoqi.hr.entity.WorkContract;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 合同响应DTO
 */
public class ContractResponse {
    
    /**
     * 合同ID
     */
    private Long id;
    
    /**
     * 合同编号
     */
    private String contractNumber;
    
    /**
     * 岗位申请ID
     */
    private Long jobApplicationId;
    
    /**
     * 雇主ID
     */
    private Long employerId;
    
    /**
     * 雇主姓名
     */
    private String employerName;
    
    /**
     * 劳动者ID
     */
    private Long workerId;
    
    /**
     * 劳动者姓名
     */
    private String workerName;
    
    /**
     * 合同标题
     */
    private String contractTitle;
    
    /**
     * 工作内容描述
     */
    private String workDescription;
    
    /**
     * 工作地点
     */
    private String workLocation;
    
    /**
     * 工作开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 工作结束时间
     */
    private LocalDateTime endTime;
    
    /**
     * 薪资金额
     */
    private BigDecimal salary;
    
    /**
     * 薪资类型
     */
    private String salaryType;
    
    /**
     * 付款方式
     */
    private String paymentMethod;
    
    /**
     * 其他条款
     */
    private String otherTerms;
    
    /**
     * 合同状态
     */
    private WorkContract.ContractStatus status;
    
    /**
     * 雇主签署状态
     */
    private Boolean employerSigned;
    
    /**
     * 雇主签署时间
     */
    private LocalDateTime employerSignTime;
    
    /**
     * 劳动者签署状态
     */
    private Boolean workerSigned;
    
    /**
     * 劳动者签署时间
     */
    private LocalDateTime workerSignTime;
    
    /**
     * 第三方合同ID（法大大等）
     */
    private String thirdPartyContractId;
    
    /**
     * 合同文件URL
     */
    private String contractFileUrl;
    
    /**
     * 备注
     */
    private String remark;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    // Getter and Setter methods
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getContractNumber() {
        return contractNumber;
    }

    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    public Long getJobApplicationId() {
        return jobApplicationId;
    }

    public void setJobApplicationId(Long jobApplicationId) {
        this.jobApplicationId = jobApplicationId;
    }

    public Long getEmployerId() {
        return employerId;
    }

    public void setEmployerId(Long employerId) {
        this.employerId = employerId;
    }

    public String getEmployerName() {
        return employerName;
    }

    public void setEmployerName(String employerName) {
        this.employerName = employerName;
    }

    public Long getWorkerId() {
        return workerId;
    }

    public void setWorkerId(Long workerId) {
        this.workerId = workerId;
    }

    public String getWorkerName() {
        return workerName;
    }

    public void setWorkerName(String workerName) {
        this.workerName = workerName;
    }

    public String getContractTitle() {
        return contractTitle;
    }

    public void setContractTitle(String contractTitle) {
        this.contractTitle = contractTitle;
    }

    public String getWorkDescription() {
        return workDescription;
    }

    public void setWorkDescription(String workDescription) {
        this.workDescription = workDescription;
    }

    public String getWorkLocation() {
        return workLocation;
    }

    public void setWorkLocation(String workLocation) {
        this.workLocation = workLocation;
    }

    public LocalDateTime getStartTime() {
        return startTime;
    }

    public void setStartTime(LocalDateTime startTime) {
        this.startTime = startTime;
    }

    public LocalDateTime getEndTime() {
        return endTime;
    }

    public void setEndTime(LocalDateTime endTime) {
        this.endTime = endTime;
    }

    public BigDecimal getSalary() {
        return salary;
    }

    public void setSalary(BigDecimal salary) {
        this.salary = salary;
    }

    public String getSalaryType() {
        return salaryType;
    }

    public void setSalaryType(String salaryType) {
        this.salaryType = salaryType;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public String getOtherTerms() {
        return otherTerms;
    }

    public void setOtherTerms(String otherTerms) {
        this.otherTerms = otherTerms;
    }

    public WorkContract.ContractStatus getStatus() {
        return status;
    }

    public void setStatus(WorkContract.ContractStatus status) {
        this.status = status;
    }

    public Boolean getEmployerSigned() {
        return employerSigned;
    }

    public void setEmployerSigned(Boolean employerSigned) {
        this.employerSigned = employerSigned;
    }

    public LocalDateTime getEmployerSignTime() {
        return employerSignTime;
    }

    public void setEmployerSignTime(LocalDateTime employerSignTime) {
        this.employerSignTime = employerSignTime;
    }

    public Boolean getWorkerSigned() {
        return workerSigned;
    }

    public void setWorkerSigned(Boolean workerSigned) {
        this.workerSigned = workerSigned;
    }

    public LocalDateTime getWorkerSignTime() {
        return workerSignTime;
    }

    public void setWorkerSignTime(LocalDateTime workerSignTime) {
        this.workerSignTime = workerSignTime;
    }

    public String getThirdPartyContractId() {
        return thirdPartyContractId;
    }

    public void setThirdPartyContractId(String thirdPartyContractId) {
        this.thirdPartyContractId = thirdPartyContractId;
    }

    public String getContractFileUrl() {
        return contractFileUrl;
    }

    public void setContractFileUrl(String contractFileUrl) {
        this.contractFileUrl = contractFileUrl;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public LocalDateTime getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt;
    }

    public LocalDateTime getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(LocalDateTime updatedAt) {
        this.updatedAt = updatedAt;
    }
}
